package com.c2c.mapper;

import com.c2c.po.Comment;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

public interface CommentMapper {

    /**
     * 查看所有的评论
     * @return              所有评论
     */
//    @Select("select * from comment")
    List<Comment> findAllComment();

    /**
     * 根据Id查找对应评论
     * @return              对应用户评论
     */
//    @Select("select * from comment where commentId = #{commentId}")
    Comment findByCommentId(int commentId);

    /**
     * 根据用户Id查询其评论
     * @param userAccount  用户ID
     * @return             用户评论
     */
//    @Select("select * from comment where userAccount = #{userAccount}")
    List<Comment> findByUserAccount(int userAccount);

    /**
     * 根据商品查询所有评论
     * @param goodsId      商品ID
     * @return             返回查找到的内容
     */
//    @Select("select * from comment where goodsId = #{goodsId}")
    List<Comment> findByGoodsId(int goodsId);

    /**
     * 根据评论编号更改评论内容   此处应该是用户可调用
     * @param comment     封装内容
     */
//    @Update("update comment set commentTime = #{commentTime} ,commentContent = #{commentContent} where commentId = #{commentId}")
    void updateContentByCommentId(Comment comment);

    /**
     * 根据评论编号更改评论状态   此处应该是管理员可调用
     * @param comment     封装内容
     */
//    @Update("update comment set commentState = #{commentState} where commentId = #{commentId}")
    void updateStateByCommentId(Comment comment);

    /**
     * 根据评论Id删除对应评论，此方法理论只能由用户调用  删除自己的评论
     * @param commentId     评论ID
     */
//    @Delete("delete from comment where commentId = #{commentId}")
    void deleteByCommentId(int commentId);

    /**
     * 新增评论
     * @param comment    封装内容
     */
//    @Insert("insert into comment values(#{commentId},#{commentTime},#{commentContent},1,#{userAccount},#{goodsId})")
    void insertCommentId(Comment comment);
}
